package fs

import (
	"io/ioutil"
	"strings"

	"gitee.com/minph/siphan/diycode"
)

// 从字符串解析 CodeSlice
//
// 需要指定 orderSlice
func ReadHexKeyContentFromSlice(content string, orderSlice diycode.CodeSlice) (diycode.CodeSlice, error) {

	hexKey := diycode.HexKey{
		OrderSlice: orderSlice,
		List:       strings.Split(content, " "),
	}

	return hexKey.ParseToCodeSlice()
}

// 从字符串解析 CodeSlice
//
// 使用默认 diycode.CodeStr
func ReadHexKeyContent(content string) (diycode.CodeSlice, error) {

	hexKey := diycode.HexKey{
		OrderSlice: diycode.GetCodeSlice(),
		List:       strings.Split(content, " "),
	}

	return hexKey.ParseToCodeSlice()
}

// 从文件内容读取并解析 CodeSlice
//
// 需要指定 orderSlice
func ReadHexKeyFromFileWithSlice(filename string, orderSlice diycode.CodeSlice) (diycode.CodeSlice, error) {

	content, err := ioutil.ReadFile(filename)
	if err != nil {
		return nil, err
	}

	return ReadHexKeyContentFromSlice(string(content), orderSlice)
}

// 从文件内容读取并解析 CodeSlice
//
// 使用默认 diycode.CodeStr
func ReadHexKeyFromFile(filename string) (diycode.CodeSlice, error) {

	content, err := ioutil.ReadFile(filename)
	if err != nil {
		return nil, err
	}

	return ReadHexKeyContentFromSlice(string(content), diycode.GetCodeSlice())
}
